function GetPos(nPosition, nLength, vStart, vMiddle, vEnd)
	local nPos = nPosition/nLength
	local nPosTrig = nPos*(math.pi/2)
	
	local vDifference = vMiddle - vStart
	local vDifference2 = vEnd - vMiddle
	
	local nSin = math.sin(nPosTrig)-1
	local nCos = math.cos(nPosTrig)
	
	local nX = vEnd.x-((vDifference2.x*nCos)-(vDifference.x*nSin))
	local nY = vEnd.y-((vDifference2.y*nCos)-(vDifference.y*nSin))
	local nZ = vEnd.z-((vDifference2.z*nCos)-(vDifference.z*nSin))
	
	local vReturn = Vector(nX, nY, nZ)
	
	return vReturn
end

function GetAng(nPosition, nLength, aStart, aMiddle, aEnd)
	local nPos = nPosition/nLength
	local nPosTrig = nPos*(math.pi/2)
	
	local aDifference = aMiddle - aStart
	local aDifference2 = aEnd - aMiddle
	
	local nSin = math.sin(nPosTrig)-1
	local nCos = math.cos(nPosTrig)
	
	local nX = aEnd.p-((aDifference2.p*nCos)-(aDifference.p*nSin))
	local nY = aEnd.y-((aDifference2.y*nCos)-(aDifference.y*nSin))
	local nZ = aEnd.r-((aDifference2.r*nCos)-(aDifference.r*nSin))
	
	local aReturn = Angle(nX, nY, nZ)
	
	return aReturn
end